{{tag>bash vétuste sécurité}}

----

====== Comment se protéger des Fork Bomb ? ======

===== Introduction =====

==== Qu'est-ce qu'une fork bomb ? ====

Une //fork bomb// (parfois appelée //logic bombe//, bombe logique), est une attaque par déni de service qui peut aller jusqu'à rendre votre ordinateur complètement inutilisable. Elle agit en se dupliquant infiniment jusqu'à saturer la table des processus.

Elle peut autant être le fruit d'une attaque (sur un serveur par exemple), que celui d'une erreur de programmation. Heureusement, il existe des moyens de se protéger des //fork bomb//.

A titre d'exemple (et donc à ne pas tester ;-)), une //fork bomb// pour le shell Bash :

<code>:(){ :|:& };:</code> 

<note warning>
Comme expliqué précédemment, la commande ci-dessus va rapidement faire planter votre système : son utilisation est donc à proscrire...
</note>



==== Comment s'en protéger ? ====

Vu qu'une //fork bomb// a pour but de saturer la table des processus, un moyen simple et efficace de s'en prémunir consiste à limiter le nombre de processus que peut exécuter un utilisateur (sachant que par défaut il n'y a pas de limite). Pour cela, il suffit de modifier le fichier **/etc/security/limits.conf** comme je vous propose de le faire ci-dessous.
===== Limiter le nombre de processus =====

Il va falloir [[:tutoriel:comment_editer_un_fichier|éditer le fichier]] ** /etc/security/limits.conf ** en super utilisateur, avec par exemple :

<code>gksudo gedit /etc/security/limits.conf</code>

Le fichier qui s'ouvre est entièrement commenté. Afin de limiter le nombre de processus que peuvent exécuter les utilisateurs, il va falloir rajouter la ligne suivante :

<file>*              hard    nproc           100</file>

Juste avant :

<file># End of file </file>

<note tip>
Cette ligne limite à 100 le nombre de processus, vous pouvez modifier ce chiffre à votre convenance.
</note>

Redémarrez ensuite votre ordinateur pour que les nouveaux paramètres soient pris en compte. Pour le vérifier (non, n'allez pas tester la //fork bomb// :-P), utilisez la commande :

<code>ulimit -u</code>

Qui doit renvoyer : ''100''.

Si c'est le cas, les //fork bomb// ne sont plus qu'un mauvais souvenir !

<note tip>
Si cela ne fonctionne toujours pas, vérifiez que vous avez bien la ligne <code>session required /lib/security/pam_limits.so</code> dans  
  * **/etc/pam.d/common-session**
  * **/etc/pam.d/login**
  * **/etc/pam.d/su**
  * **/etc/pam.d/xdm**
  * **/etc/pam.d/gdm**
  * **/etc/pam.d/kde** (Pour Kubuntu)
  * **/etc/pam.d/sshd** 
Pour ssh, pensez à mettre l'option <code>UsePAM yes</code>dans **/etc/ssh/sshd_config**
;-) (Sous la 8.04 Server je ne les avais pas)
</note>

===== Quelques liens =====

  * [[http://fr.wikipedia.org/wiki/Fork_bomb|Article de Wikipédia sur les fork bomb]]
  * [[http://www.debian.org/doc/manuals/securing-debian-howto/ch4.en.html#s-user-limits|Le fichier limits.conf dans la documentation Debian]]

----
// Contributeurs : [[utilisateurs:Nicoz]]//